All rights reversed

Einfⁿhrung in Dylan

Vortrag: Andreas Bogk <ich@andreas.org>
http://www.gwydiondylan.org/
Bericht: Jens Ohlig <jo@devcon.net>

So etwas wie eine ideale Programmiersprache scheint es nicht zu geben. Nehmen wir zum Beispiel die Typisierung von Variablen. Es gibt im Grunde zwei Konzepte: dynamisches Typing und statisches Typing. Beides hat seine Vor- und Nachteile: Bei Sprachen wie C mu▀ ich explizit festlegen, ob ich Ganzzahl-, Flie▀komma- oder Zeichendaten verwenden will. In Perl dagegen schreibe ich einfach die Variable, die Sprache kⁿmmert sich dann um die Typisierung. Dieses Verfahren ist natⁿrlich viel bequemer, wenn ich einfach nur schnell eine Idee hinprogrammieren will, auf der anderen Seite ist es natⁿrlich verstΣndlich, da▀ eine solche dynamische Typisierung nicht sehr performant ist. Der Compiler kann den Code nicht zur Compile-Zeit auf den Datentyp hin optimieren. Ein klassisches Dilemma, so scheint es.

Vorhang auf: In diese Problematik hinein kommt Dylan (Dynamic Language), eine relativ junge Programmiersprache, die ihre Wurzeln bei Apple hat. In Dylan kann man problemlos einfach so drauflosprogrammieren und mu▀ sich nicht um Typisierung kⁿmmern. Wenn das Programm dann allerdings auf Geschwindigkeit optimiert werden soll, benutzt man einfach statisches Typing. Das beste zweier Welten, sozusagen.

─hnliche Konfliktfelder gibt es bei der Art der Sprache: Neben den bekannten imperativen Programmiersprachen wie Pascal und C gibt es noch objektorientierte Sprachen wie Smalltalk, C++ oder Java und zu guter letzt funktionale Sprachen, von denen LISP die bekannteste sein dⁿrfte. Dylan ist auch hier wieder hybrid. Komplett objektorientiert hat es trotzdem M÷glichkeiten zur funktionalen Programmierung. Die Syntax von LISP ist ja so eine Geschmackssache. "Es gibt zwei Arten von Leuten: Die einen stehen auf viele Klammern und die anderen hassen es. Die meisten hassen es", fasst Andreas Bogk zusammen. Dylan hat daher eine sehr angenehm zu lesende, Pascal-Σhnliche Syntax.

Dylan verfⁿgt aber auch noch ⁿber andere Features, die man von einer modernen Programmiersprache erwartet. Garbage collection, das automatische Entsorgen ungenutzter Variablen oder Objekte, kennt man aus Sprachen wie Perl oder Java und natⁿrlich gibt es sie in Dylan auch.

Eine Sache, die man sich bei der objektorientierten Programmierung immer wⁿnscht, ist die Trennung von Methoden und Objekten. "Wenn ich zwei Objekte 'Frau' und 'Mann' habe und die Methode 'Sex' darauf anwenden will -- soll dann die Methode 'Sex' zum Objekt 'Mann' oder 'Frau geh÷ren?" machte Andreas Bogk die ▄berlegungen der Dylan-Designer deutlich.

Weiterhin bietet Dylan durch sogenannte Slots nette M÷glichkeiten, um Objekten andere Objekte zu ⁿbergeben. WΣhrend man typischerweise unter C++ selbst Methoden schreibt, um Member Variables zu setzen oder sie aus dem Objekt herauszuziehen, kann man in Dylan ganz bequem Slots definieren, und die "Getter"- und "Setter"-Methoden stehen automatisch zur Verfⁿgung.

Soweit kurz zu den Features von Dylan, zu denen es durchaus noch mehr zu sagen gΣbe. Auf der Implementationsseite sieht Dylan auch relativ vielversprechend aus. Das ursprⁿngliche Projekt bei Apple kam zwar nie ⁿber den Status einer technologischen Machbarkeitsstudie hinaus, aber es gibt noch andere AnsΣtze. Eine kommerzielle Implementation fⁿr Win32 ist fertig (nΣheres unter http://www.harlequin.com/ ) und erzeugt Code, der zu 99% so schnell ist wie C.

Eine freie Implementation von Dylan fⁿr Unix-Σhnliche Betriebsysteme lΣuft unter dem Namen "Gwydion Dylan". Andreas Bogk ist selbst ma▀geblich am Gwydion Dylan-Projekt beteiligt. Haufenweise Informationen hierzu gibt es unter http://www.gwydiondylan.org/ . Ganz fertig ist der natⁿrlich in Dylan selbst geschriebene Compiler noch nicht, es fehlen noch Details. Auch die Perfomanz des vom Compiler erzeugten Codes kommt bei weitem noch nicht an C heran, aber Andreas Bogk verspricht Programme, die etwa "um den Faktor 10 schneller als Perl laufen". Immerhin, ein Anfang. Dylan wird noch von sich h÷ren lassen.